﻿using System;
using Sinacor.Infra.Service.Common;
using Sinacor.Infra.Service.Validation;

namespace Sinacor.Servico.Bovespa.Corretagem.BusinessEntity.Parameter
{
    /// <summary>
    /// Filtro para pesquisa de controles de beneficios de políticas de corretagem por
    /// chave
    /// </summary>
    public class FiltroControleBeneficioChave : BaseBusinessEntity
    {
        #region Atributos

        private const int RSCODIGOPOLITICA = 109538;
        private const int RSDATAINICIAL = 109539;
        private const int RSTIPOBENEFICIO = 109540;

        private int? _codigoPolitica;
        private DateTime? _dataInicial;
        private BusinessEntity.TipoBeneficio _tipoBeneficio;

        #endregion

        #region Construtores

        /// <summary>
        /// Construtor FiltroControleBeneficioChave
        /// </summary>
        public FiltroControleBeneficioChave() { }

        /// <summary>
        /// Construtor FiltroControleBeneficioChave
        /// </summary>
        /// <param name="codigoPolitica"></param>
        /// <param name="dataInicial"></param>
        /// <param name="tipoBeneficio"></param>
        public FiltroControleBeneficioChave(int? codigoPolitica, DateTime? dataInicial, BusinessEntity.TipoBeneficio tipoBeneficio)
        {
            this._codigoPolitica = codigoPolitica;
            this._dataInicial = dataInicial;
            this._tipoBeneficio = tipoBeneficio;
        }

        #endregion

        #region Propriedades

        /// <summary>
        /// Codigo da política de corretagem
        /// </summary>
        [NotNull(RSCODIGOPOLITICA)]
        public int? CodigoPolitica
        {
            get
            {
                return _codigoPolitica;
            }
            set
            {
                _codigoPolitica = value;
            }
        }

        /// <summary>
        /// Data inicial de vigência da política de corretagem
        /// </summary>
        [NotNull(RSDATAINICIAL)]
        public DateTime? DataInicial
        {
            get
            {
                return _dataInicial;
            }
            set
            {
                _dataInicial = value;
            }
        }

        /// <summary>
        /// Tipo de beneficio da política de corretagem
        /// </summary>
        [NotNull(RSTIPOBENEFICIO)]
        public BusinessEntity.TipoBeneficio TipoBeneficio
        {
            get
            {
                return _tipoBeneficio;
            }
            set
            {
                _tipoBeneficio = value;
            }
        }

        #endregion
    }
}